Описание
Задает или возвращает значение, указывающее, описывает ли объект
Index первичный индекс таблицы (только в рабочей области Microsoft
Jet).
Значение
Задаваемое или возвращаемое значение является выражением типа
Boolean и содержит значение True, если объект Index
представляет первичный индекс.
Значение свойства Primary доступно для
чтения и записи для нового объекта Index, еще не добавленного в
семейство, и только для чтения для существующего объекта Index в
семействе Indexes. Если объект Index добавлен в объект
TableDef, а объект TableDef еще не добавлен в семейство
TableDefs, свойство Index доступно для чтения-записи.
Замечания
Первичный индекс состоит из одного или нескольких полей, которые
однозначно определяют порядок расположения всех записей таблицы. Поскольку
первичный индекс должен быть уникальным, свойство Unique объекта
Index получает значение True. Если первичный индекс состоит из
нескольких полей, то каждое из полей может содержать повторяющиеся значения, но
каждая комбинация значений всех полей индекса должна быть уникальной. Первичный
индекс может являться ключом таблицы и обычно содержит те же поля, что и
ключ.
Создание индексов для таблицы не является обязательным, однако доступ к
отдельной записи в больших таблицах без определенного индекса может занимать
достаточно много времени. Значения свойства Attributes каждого из
объектов Field объекта Index определяют порядок записей и,
соответственно, способ доступа к данным с использованием этого индекса. При
создании новой таблицы полезно создать индекс по одному или нескольким полям,
однозначно определяющим каждую запись, а затем задать для свойства
Primary объекта Index значение True.
Когда задается ключ
таблицы, этот ключ автоматически становится первичным индексом таблицы.
Пример
Следующая программа использует свойство Primary, чтобы
назначить новый объект Index нового объекта TableDef первичным
индексом таблицы. Следует помнить, что значение True свойства
Primary автоматически задает также значение True для свойств
Unique и Required.
Sub PrimaryX()
Dim dbsNorthwind As Database
Dim tdfNew As TableDef
Dim idxNew As Index
Dim idxLoop As Index
Dim fldLoop As Field
Dim prpLoop As Property
Set dbsNorthwind = OpenDatabase("Борей.mdb")
' Создает и добавляет новый объект TableDef в семейство
' TableDefs базы данных "Борей".
Set tdfNew = dbsNorthwind.CreateTableDef("НоваяТаблица")
tdfNew.Fields.Append tdfNew.CreateField("ЧисловоеПоле", dbLong, 20)
tdfNew.Fields.Append tdfNew.CreateField("ТекстовоеПоле", dbText, 20)
dbsNorthwind.TableDefs.Append tdfNew
With tdfNew
' Создает и добавляет новый объект Index в
' семейство Indexes нового объекта TableDef.
Set idxNew = .CreateIndex("ЧисловойИндекс")
idxNew.Fields.Append idxNew.CreateField("ЧисловоеПоле")
idxNew.Primary = True
.Indexes.Append idxNew
Set idxNew = .CreateIndex("ТекстовыйИндекс")
idxNew.Fields.Append idxNew.CreateField("ТекстовоеПоле")
.Indexes.Append idxNew
Debug.Print .Indexes.Count & " Индексы в таблице " & .Name
' Отображает семейство Indexes.
For Each idxLoop In .Indexes
With idxLoop
Debug.Print " " & .Name
' Отображает семейство Fields каждого
' объекта Index.
Debug.Print " Fields"
For Each fldLoop In .Fields
Debug.Print " " & fldLoop.Name
Next fldLoop
' Отображает семейство Properties каждого
' объекта Index.
Debug.Print " Свойства"
For Each prpLoop In .Properties
Debug.Print " " & prpLoop.Name & _
" = " & IIf(prpLoop = "", "[empty]", prpLoop)
Next prpLoop
End With
Next idxLoop
End With
dbsNorthwind.TableDefs.Delete tdfNew.Name
dbsNorthwind.Close
End Sub